import logging
import allure
import pymysql
import requests
import os
from config.config import *


@allure.step("2.发送HTTP请求")
def send_http_request(**request_data):   # 这里形参要求是解包后的数据；其实不解包也可以，但是解包了，到时候在allure报告中看到的请求参数格式会清晰一些。
    # 核心步骤2：发起请求，获取响应结果
    res = requests.request(**request_data)
    logging.info(f"2.发送HTTP请求，响应文本为：{res.text}")
    return res


# 我们不把jdbc请求作为核心步骤，安装 @allure.step装饰器。这是因为它实际上是{数据库断言}和{sql提取}的一部分，并非独立的步骤，如果在allure报告中战士出来，就会显得有点乱。
def send_jdbc_request(sql, index=0):
    conn = pymysql.Connect(
        # host=DB_HOST,
        # port=DB_PORT,
        # database=DB_NAME,
        # user=DB_USER,
        # password=DB_PASSWORD,
        **eval(os.environ["DB"]),    # os.environ["DB"]这个键的值是字符串，要用eval转成字典，然后解包（解包后的结果是键值对形式的）
        charset="utf8"
    )
    cur = conn.cursor()
    cur.execute(sql)
    result = cur.fetchone()  # fetchone()返回的数据是一个元组。
    cur.close()
    conn.close()
    return result[index]


